﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using servicios.http;
using BlackoutRugby.servicios.http;
using BlackoutRugby.enums.solicitud;
using BlackoutRugby.xml.parser;
using BlackoutRugby.entity.equipo;
using BlackoutRugby.entity.jugador;
using BlackoutRugbyWeb.BlackoutRugby.entity.equipo;

namespace BlackoutRugby.servicios.equipo
{
    public class ServicioEquipo : BlackoutRugby.serviciosBase.ServicioEquipoBase
    {
        ServicioHttp srvHttp;
        private static ServicioEquipo srv;
        private static long idEquipo;

        public static ServicioEquipo getInstance(long ie)
        {
            idEquipo = ie;
            if (srv == null)
                return srv = new ServicioEquipo(ie);
            else
                return srv.conServiciosActualizados(ie);
        }

        private ServicioEquipo conServiciosActualizados(long ie)
        {
            srvHttp = ServicioHttp.getInstance(ie);
            return this;
        }

        private ServicioEquipo(long ie)
        {
            idEquipo = ie;
            srvHttp = ServicioHttp.getInstance(ie);
        }

        override public InfoEquipoEntity recuperarInfoEquipo(long idEquipo)
        {
            Parametro param1 = new Parametro(Parametro.TipoParametro.IdEquipo, ""+idEquipo);
            List<Parametro> lParams = new List<Parametro>();

            lParams.Add(param1);
            
            TipoSolicitud sol = new TipoSolicitud(TipoSolicitud.Tipo.InfoEquipo);

            string respuesta = srvHttp.enviarPost(sol, lParams);

            InfoEquipoEntity infoEquipoEty = XmlParser.toInfoEquipoEntity(respuesta);

            return infoEquipoEty;


        }


        public override System.Collections.Generic.List<BlackoutRugby.entity.jugador.JugadorEntity> recuperarPlantilla(long idEquipo)
        {

            List<JugadorEntity> jugadores = new List<JugadorEntity>();
            Parametro param1 = new Parametro(Parametro.TipoParametro.IdEquipo, "" + idEquipo);
            List<Parametro> lParams = new List<Parametro>();

            lParams.Add(param1);

            TipoSolicitud sol = new TipoSolicitud(TipoSolicitud.Tipo.Plantilla);

            string respuesta = srvHttp.enviarPost(sol, lParams);

            jugadores = XmlParser.toListJugadoresEntity(respuesta);

            return jugadores;
        }


        public InfoEntrenamientoEntity recuperarInfoEntrenamiento(long idEquipo)
        {
            List<Parametro> lParams = new List<Parametro>();
            TipoSolicitud sol = new TipoSolicitud(TipoSolicitud.Tipo.InformeEntrenamiento);
            InfoEntrenamientoEntity ieEty;
            string respuesta = srvHttp.enviarPost(sol, lParams);

            ieEty = XmlParser.toInfoEntrenamientoEntity(respuesta);


            return ieEty;

        }

    }
}
